/**
 * 备忘录模式（memento）：
 *   俗称：后悔药模式
 *   在不破坏对象的封装性前提下，
 *   在对象之外捕获并保存该对象内部状态以便日后对象使用或者对象恢复到以前某个状态。
 * 
 *  应用场景：
 *     开发一个分页组件的时候，点击下一页获取新数据，但是当点击上一页的时候，又重新获取数据，
 *     造成无谓的流量浪费，这时可以对数据进行缓存。
 */

/**
 * 备忘录模式伪代码
 * @returns 
 */
var page = function () {
    //通过cache缓存数据
    var cache = {}
    return function(page, fn) {
        if (cache[page]) {
            showPage(page, cache[page])
        } else { 
            $.post('/url', function(data) {
                showPage(page, data)
                cache[page] = data
            })
        }
        fn && fn()
    }
}